// 基于axios封装请求模块
import { getUser } from '../utils/storage.js';
import axios from 'axios';
import JSONbig from 'json-bigint';

// 创建axios实例
// 可以写自己的配置项
const instance = axios.create({
  //   baseURL: 'http://api-toutiao-web.itheima.net',
  baseURL: 'http://ttapi.research.itcast.cn/',
  timeout: 1000,
  headers: { 'X-Custom-Header': 'foobar' },
  transformResponse: [function (data) {
    // console.log('transformResponse', data)
    // 响应数据转换
    // data就是本次请求获取的数据,进行大数处理
    // 后端返回的数据可能不是json字符串，而JSONbig.parse()只能处理json字符串,所以用try...catch...捕获异常
    try {
      return JSONbig.parse(data || '{}');
    } catch (error) {
      console.log('JSONbig转换出错', error);
      return data;
    }
  }]
});

// 使用axios请求拦截器统一设置token
// 请求拦截器会在所有请求发出之前处理
instance.interceptors.request.use(function (config) {
  const userInfo = getUser();
  // config本次请求采用的配置,加上headers，设置token
  if (userInfo && userInfo.token) {
    config.headers.Authorization = `Bearer ${userInfo.token}`;
  }
  return config;
}, function (error) {
  return Promise.reject(error);
});

// 默认导出
export default instance;
